package constants

// Constants 通用常量信息
type Constants struct{}

// 字符集常量
const (
	// UTF-8 字符集
	UTF8 = "UTF-8"

	// GBK 字符集
	GBK = "GBK"
)

// 网络相关常量
const (
	// www主域
	WWW = "www."

	// http请求
	HTTP = "http://"

	// https请求
	HTTPS = "https://"
)

// 系统状态常量
const (
	// 通用成功标识
	SUCCESS = "0"

	// 通用失败标识
	FAIL = "1"

	// 登录成功
	LOGIN_SUCCESS = "Success"

	// 注销
	LOGOUT = "Logout"

	// 注册
	REGISTER = "Register"

	// 登录失败
	LOGIN_FAIL = "Error"
)

// 权限相关常量
const (
	// 所有权限标识
	ALL_PERMISSION = "*:*:*"

	// 管理员角色权限标识
	SUPER_ADMIN = "admin"

	// 角色权限分隔符
	ROLE_DELIMETER = ","

	// 权限标识分隔符
	PERMISSION_DELIMETER = ","
)

// 验证码相关常量
const (
	// 验证码有效期（分钟）
	CAPTCHA_EXPIRATION = 2
)

// 令牌相关常量
const (
	// 令牌
	TOKEN = "token"

	// 令牌前缀
	TOKEN_PREFIX = "Bearer "

	// 登录用户键
	LOGIN_USER_KEY = "login_user_key"

	// 用户ID
	JWT_USERID = "userid"

	// 用户名称
	JWT_USERNAME = "sub"

	// 用户头像
	JWT_AVATAR = "avatar"

	// 创建时间
	JWT_CREATED = "created"

	// 用户权限
	JWT_AUTHORITIES = "authorities"
)

// 资源相关常量
const (
	// 资源映射路径前缀
	RESOURCE_PREFIX = "/profile"
)

// 远程调用相关常量
const (
	// RMI 远程方法调用
	LOOKUP_RMI = "rmi:"

	// LDAP 远程方法调用
	LOOKUP_LDAP = "ldap:"

	// LDAPS 远程方法调用
	LOOKUP_LDAPS = "ldaps:"
)

// 白名单配置
var (
	// 自动识别json对象白名单配置（仅允许解析的包名，范围越小越安全）
	JSON_WHITELIST_STR = []string{"com.ruoyi"}

	// 定时任务白名单配置（仅允许访问的包名，如其他需要可以自行添加）
	JOB_WHITELIST_STR = []string{"com.ruoyi.quartz.task"}

	// 定时任务违规的字符
	JOB_ERROR_STR = []string{
		"java.net.URL",
		"javax.naming.InitialContext",
		"org.yaml.snakeyaml",
		"org.springframework",
		"org.apache",
		"com.ruoyi.common.utils.file",
		"com.ruoyi.common.config",
		"com.ruoyi.generator",
	}
)
